package com.br.extreme.StockService.util;

import java.util.ArrayList;
import java.util.List;

import com.br.extreme.StockService.domain.Cfop;
import com.br.extreme.StockService.domain.Cst;
import com.br.extreme.StockService.domain.Icms;
import com.br.extreme.StockService.domain.Ncm;
import com.br.extreme.StockService.domain.Produto;
import com.br.extreme.StockService.model.ProdutoDTO;

public class ProdutoTransformer {

	private static ProdutoTransformer instance;
	
	private ProdutoTransformer() {}
	
	public static ProdutoTransformer getInstance(){
		if(instance == null){
			instance = new ProdutoTransformer();
		}
		return instance;
	}
	
	public ProdutoDTO transformar(Produto produto){
		ProdutoDTO produtoDTO = new ProdutoDTO();
		produtoDTO.setCodigo(produto.getCodigo());
		produtoDTO.setBarras(produto.getCodigoBarras());
		produtoDTO.setDescricao(produto.getDescricao());
		produtoDTO.setValor(produto.getValor());
		produtoDTO.setQuantidade(produto.getQuantidade());
		produtoDTO.setNcm(produto.getNcm().getCodigo());
		produtoDTO.setIcms(produto.getIcms().getCodigo());
		produtoDTO.setCfop(produto.getCfop().getCfop());
		produtoDTO.setCst(produto.getCst().getCodigo());
		return produtoDTO;
	}
	
	public List<ProdutoDTO> transformar(List<Produto> produtos){
		List<ProdutoDTO>produtosDTO = new ArrayList<ProdutoDTO>();
		for (Produto produto : produtos) {
				produtosDTO.add(transformar(produto));	
		}
		return produtosDTO;
	}
	
	public Produto transformar(ProdutoDTO produtoDTO){
		Produto produto = new Produto();
		produto.setCodigo(produtoDTO.getCodigo());
		produto.setCodigoBarras(produtoDTO.getBarras());
		produto.setDescricao(produtoDTO.getDescricao());
		produto.setValor(produtoDTO.getValor());
		produto.setQuantidade(produtoDTO.getQuantidade());
		produto.setNcm(new Ncm(produtoDTO.getNcm()));
		produto.setCfop(new Cfop(produtoDTO.getCfop()));
		produto.setIcms(new Icms(produtoDTO.getIcms()));
		produto.setCst(new Cst(produtoDTO.getCst()));
		return produto;
	}
}
